#pragma once

//
//class Solution {
//public:
//    int lengthOfLongestSubstring(string s)
//    {
//        if (s.size() == 0)
//            return 0;
//
//
//        int gap = 0;
//        for (int left = 0, right = 0; right < s.size(); right++)
//        {
//            /*if (right != 0 && s[right] == s[right - 1])
//                left = right++;*/
//            int tmp = left == 0 ? 0 : left+1;
//            while (tmp < right)
//            {
//                if (s[tmp] == s[right])
//                {
//                    left = tmp + 1;
//                    break;
//                }
//                tmp += 1;
//            }
//            while (left < right && s[left] == s[right])
//            {
//                left += 1;
//            }
//            gap = max(gap, right - left+1);
//            /*while (left < right && s[left] == s[right])
//            {
//                left += 1;
//            }*/
//        }
//        return gap;
//    }
//}; 


class Solution {
public:
    int longestOnes(vector<int>& nums, int k)
    {
        int size = nums.size();
        int gap = 0;
        int num_zero = 0;
        for (int left = 0, right = 0; right < size; right++)
        {
            if (nums[right] == 0)
                num_zero += 1;
            while (num_zero > k)
            {
                left += 1;
                if (left > 0 && nums[left - 1] == 0)
                    num_zero -= 1;
            }
            
                gap = max(gap, right - left + 1);
        }
        return gap;
    }
};